package org.jeecg.modules.system.entity;

import java.io.Serializable;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.common.util.ActUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.annotation.Transient;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;

/**
 * @Description: 推送
 * @Author: jeecg-boot
 * @Date:   2020-02-23
 * @Version: V1.0
 */
@Data
@TableName("sys_notice")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="sys_notice对象", description="推送")
public class Notice {

	/**
	 * 通知类型
	 * 1:通讯录申请确认通知
	 */
	public static final String NOTICE_TYPE_CONFIRM = "1";
	/**
	 * 通知类型
	 * 2:通讯录申请被同意通知
	 */
	public static final String  NOTICE_TYPE_AGREE = "2";
	/**
	 * 通知类型
	 * 3:通讯录申请被拒绝通知
	 */
	public static final String NOTICE_TYPE_REJECT = "3";
	/**
	 * 状态
	 * 0:未阅读
	 */
	public static final int STATUS_UNREAD = 0;
	/**
	 * 状态
	 * 1:已阅读未处理
	 */
	public static final int STATUS_READ = 1;
	/**
	 * 状态
	 * 2:已阅读并处理完毕
	 */
	public static final int STATUS_ACTED = 2;
	/**
	 * 状态
	 * 9:已失效
	 */
	public static final int STATUS_EXPIRED = 9;

	/**状态 99：未推送到*/
	public static final int STATUS_FAIL = 99;


	/**主键*/
	@TableId(type = IdType.ID_WORKER_STR)
    @ApiModelProperty(value = "主键")
	private String id;
	/**通知对象用户id(sys_user.id)*/
	@Excel(name = "通知对象用户id(sys_user.id)", width = 15)
	@ApiModelProperty(value = "通知对象用户id(sys_user.id)")
	private String targetUserId;
	/**通知类型（1:通讯录申请确认通知,2:通讯录申请被同意通知,3:通讯录申请被拒绝通知,PD打头:流程消息, AS打头:分配账号通知）*/
	@Excel(name = "通知类型（1:通讯录申请确认通知,2:通讯录申请被同意通知,3:通讯录申请被拒绝通知,PD打头:流程消息, AS打头:分配账号通知）", width = 15)
    @ApiModelProperty(value = "通知类型（1:通讯录申请确认通知,2:通讯录申请被同意通知,3:通讯录申请被拒绝通知,PD打头:流程消息, AS打头:分配账号通知）")
	private String noticeType;
	/**通知内容*/
	@Excel(name = "通知内容", width = 15)
    @ApiModelProperty(value = "通知内容")
	private String noticeContent;
	/**参数1（根据通知类型而不同）推送对应的具体业务的id */
	@Excel(name = "参数1（根据通知类型而不同）推送对应的具体业务的id ", width = 15)
    @ApiModelProperty(value = "参数1（根据通知类型而不同）推送对应的具体业务的id ")
	private String noticeParam1;
	/**参数2（根据通知类型而不同） 推送对应的具体业务的状态（流程推送：0:签收 1:审批 2:重新申请 3:周知）*/
	@Excel(name = "参数2（根据通知类型而不同） 推送对应的具体业务的状态（流程推送：0:签收 1:审批 2:重新申请 3:周知）", width = 15)
    @ApiModelProperty(value = "参数2（根据通知类型而不同） 推送对应的具体业务的状态（流程推送：0:签收 1:审批 2:重新申请 3:周知）")
	private String noticeParam2;
	/**参数3（根据通知类型而不同）:保存业务的创建者所在的部门id*/
	@Excel(name = "参数3（根据通知类型而不同）:保存业务的创建者所在的部门id", width = 15)
    @ApiModelProperty(value = "参数3（根据通知类型而不同）:保存业务的创建者所在的部门id")
	private String noticeParam3;
	/**参数4（根据通知类型而不同）:JG情况下->保存总部系统管理员的id*/
	@Excel(name = "参数4（根据通知类型而不同）:JG情况下->保存总部系统管理员的id", width = 15)
    @ApiModelProperty(value = "参数4（根据通知类型而不同）:JG情况下->保存总部系统管理员的id")
	private String noticeParam4;
	/**参数5（根据通知类型而不同）*/
	@Excel(name = "参数5（根据通知类型而不同）", width = 15)
    @ApiModelProperty(value = "参数5（根据通知类型而不同）")
	private String noticeParam5;
	/**状态（0:未阅读,1:已阅读未处理,2:已阅读并处理完毕,9:已失效）*/
	@Excel(name = "状态（0:未阅读,1:已阅读未处理,2:已阅读并处理完毕,9:已失效）", width = 15)
    @ApiModelProperty(value = "状态（0:未阅读,1:已阅读未处理,2:已阅读并处理完毕,9:已失效）")
	private Integer status;
	/**阅读时间 */
	@Excel(name = "阅读时间 ", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "阅读时间 ")
	private Date readTime;
	/**field1*/
	@Excel(name = "field1", width = 15)
    @ApiModelProperty(value = "field1")
	private String field1;
	/**field2*/
	@Excel(name = "field2", width = 15)
    @ApiModelProperty(value = "field2")
	private String field2;
	/**预留字段3 :作为通知类型的大分类 如:PD AS JG...*/
	@Excel(name = "预留字段3 :作为通知类型的大分类 如:PD AS JG...", width = 15)
    @ApiModelProperty(value = "预留字段3 :作为通知类型的大分类 如:PD AS JG...")
	private String field3;
	/**留言时的总部系统管理员id*/
	@Excel(name = "留言时的总部系统管理员id", width = 15)
    @ApiModelProperty(value = "留言时的总部系统管理员id")
	private String field4;
	/**field5*/
	@Excel(name = "field5", width = 15)
    @ApiModelProperty(value = "field5")
	private String field5;
	/**field6*/
	@Excel(name = "field6", width = 15)
    @ApiModelProperty(value = "field6")
	private String field6;
	/**未读数(统计用) */
	@Excel(name = "未读数(统计用) ", width = 15)
    @ApiModelProperty(value = "未读数(统计用) ")
	private String field7;
	@TableField(exist = false)
	private SysUser targetUser;
	@Transient
	public String getMsgName() {
		return ActUtils.getMsgMapValue(this.field3);
	}

	/**创建者*/
	@Excel(name = "创建者", width = 15)
	@ApiModelProperty(value = "创建者")
	private String createBy;
	/**创建时间*/
	@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "创建时间")
	private Date createTime;
	/**更新者*/
	@Excel(name = "更新者", width = 15)
	@ApiModelProperty(value = "更新者")
	private String updateBy;
	/**更新时间*/
	@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
	@ApiModelProperty(value = "更新时间")
	private Date updateTime;
	/**备注信息*/
	@Excel(name = "备注信息", width = 15)
	@ApiModelProperty(value = "备注信息")
	private String remarks;
	/**删除标记*/
	@Excel(name = "删除标记", width = 15)
	@ApiModelProperty(value = "删除标记")
	@TableLogic
	private String delFlag;
	/**物业公司id*/
	@Excel(name = "物业公司id", width = 15)
	@ApiModelProperty(value = "物业公司id")
	private String tenantId;

}
